Dynamic binary translation is known in the art as a technique that may be used to rewrite or create a version of a binary program originally executable on one processor-based platform that is, after translation, usable on a different processor-based platform. For example, a binary translator may convert a program intended for an Apple® PowerPC processor based platform into a program executable on an Apple platform based on an Intel® Core Duo® Processor.
A code optimization technique termed load-store disambiguation is known in the art. In general, optimization may re-order loads and stores from and to memory in an original program to produce a program with potentially improved performance. However, moving a load earlier in the execution order, than a store, or “above” a store, may potentially be an incorrect transformation of a program during optimization if the memory references in the load and store respectively are aliases of each other, that is, if they refer to the same actual memory location, and hence the program instruction that performs the load depends on the instruction that performs the store. Thus in general, analysis of a program that is being optimized is required to determine whether two memory references of interest in the optimization process are aliases. In some instances, for a pair of memory references where one depends on the other, the state of aliasing with reference to the two references is termed ambiguous if it is difficult to determine by static analysis of the program whether the two memory references alias.